/**
 * 后续添加更多类型
 * 格式化工具，包含：
 * 1.getUnitType(type)外部单位类型
 * 2.getRoleType(type)角色类型
 * 3.getOutStorageStatus(status)采购状态
 * 4.getProcurementPlanStatus(status)采购计划状态
 * 5.getTaskStatus(status)任务状态
 * 6.getBusinessStatus(status)业务状态
 * 7.incrementPrice(infoObj,incrementNum)基于infoClass元素的金额累加 wonderful 20180403
 * 8.showToatalPrice(infoObj,incrementNum)基于infoClass元素的金额合计 wonderful 20180403
 *
 * Created by xsx 2018/1/19
 */
var FormatUtil = {};

/**
 * 获取外部单位类型
 */
FormatUtil.getUnitType = (function () {
    return function (type) {
        var typeObj = {
            1:"业主单位（甲方单位）", 2:"经销商", 3:"生产厂商",
            4:"劳务输出", 5:"施工单位", 6:"其他",7:"咨询",8:"集成厂商"
        };
        return typeof(typeObj[type])=="undefined"?"无":typeObj[type];
    }
})();

/**
 * 获取角色类型
 */
FormatUtil.getRoleType = (function () {
    return function (type) {
        var typeObj = {
            1:"系统角色",
            2:"项目角色"
        };
        return typeof(typeObj[type])=="undefined"?"无":typeObj[type];
    }
})();

/**
 * 获取采购状态
 */
FormatUtil.getOutStorageStatus = (function () {
    return function (status) {
        var html;
        switch(status) {
            case 1:html = '<a style="color: #fd7013">待确认</a>';break;
            case 2:html = '<a style="color: #ed4747">确认失败</a>';break;
            case 3:html = '<a style="color: #fd7013">待采购</a>';break;
            case 4:html = '<a style="color: #28abee">采购审核</a>';break;
            case 5:html = '<a style="color: #ed4747">采购审核失败</a>';break;
            case 6:html = '<a style="color: #fd7013">采购中</a>';break;
            case 7:html = '<a style="color: #28abee">发货中</a>';break;
            case 8:html = '<a style="color: #25d30e">已发货</a>';break;
            case 9:html = '<a style="color: #fd7013">待收货</a>';break;
            case 10:html = '<a style="color: #28abee">收货中</a>';break;
            case 11:html = '<a style="color: #fd7013">待出库</a>';break;
            case 12:html = '<a style="color: #28abee">出库审核</a>';break;
            case 13:html = '<a style="color: #25d30e">出库审核成功</a>';break;
            case 14:html = '<a style="color: #ed4747">出库审核失败</a>';break;
            case 15:html = '<a style="color: #fd7013">出库中</a>';break;
            case 16:html = '<a style="color: #ed4747">库存不足</a>';break;
            case 17:html = '<a style="color: #25d30e">已出库</a>';break;
            case 18:html = '<a style="color: #fd7013">待收货</a>';break;
            case 19:html = '<a style="color: #28abee">收货中</a>';break;
            case 20:html = '<a style="color: #25d30e">已收货</a>';break;
            case 21:html = '<a style="color: #25d30e">已收货</a>';break;
            case 22:html = '<a style="color: #25d30e">已采购</a>';break;
            default:
                html = '<a style="color: red">无</a>';
        }
        return html;
    }
})();

/**
 * 获取采购计划状态
 * @desc 采购计划状态 1新建计划2库存拆分3采购询价4删除5出库拆分完成6采购询价完成
 */
FormatUtil.getProcurementPlanStatus = (function() {
    return function(status) {
        var statusObj = {
            1:"新建计划", 2:"库存拆分", 3:"采购询价",
            4:"删除", 5:"出库拆分完成", 6:"采购询价完成",7:"计划调整"
        };
        return typeof(statusObj[status])=="undefined"?"无":statusObj[status];
    }
})();

/**
 * 获取任务状态
 * 任务状态定义：
 * 0未处理,1审核通过,2审核失败,3未审核已被转交,4处理中,5已处理,6项目编辑,
 * 7项目删除,8新增项目成员,9项目成员状态改变,10项目成员角色编辑,
 * 11项目成员删除,12项目转交下一步,13生成出库清单,14添加设备出库记录,
 * 15完成设备出库,18添加收货记录,19收货完成,20添加设备自采记录,21完成自采,
 * 22集中采购确认成功,23集中采购确认失败,24集中采购审批成功,25集中采购审批失败,
 * 26添加发货记录,27完成发货
 */
FormatUtil.getTaskStatus = (function() {
    return function(status) {
        var statusObj = {
            0:"未处理", 1:"审核通过", 2:"审核失败", 3:"未审核已被转交",
            4:"处理中", 5:"已处理", 6:"项目编辑", 7:"项目删除",
            8:"新增项目成员", 9:"项目成员状态改变", 10:"项目成员角色编辑", 11:"项目成员删除",
            12:"项目转交下一步", 13:"生成出库清单", 14:"添加设备出库记录", 15:"完成设备出库",
            18:"添加收货记录", 19:"收货完成", 20:"添加设备自采记录", 21:"完成自采",
            22:"集中采购确认成功", 23:"集中采购确认失败", 24:"集中采购审批成功", 25:"集中采购审批失败",
            26:"添加发货记录", 27:"完成发货"
        };
        return typeof(statusObj[status])=="undefined"?"无":statusObj[status];
    }
})();

/**
 * 获取项目状态
 * 业务状态定义：1新建项目,2项目信息收集,3立项审核,4立项审核通过,5立项审核失败,
 * 6项目实施准备,7项目实施,8成本汇总,9验收审核,10验收审核通过,11验收审核失败
 * 12验收中,13缺陷责任管理,14缺陷责任管理（未结题）,15缺陷责任管理（已结题）,
 * 16缺陷责任管理（结题失败）,17已结题,18项目删除,19立项审核中（生产经营部）,
 * 20立项审核通过（生产经营部）,21立项审核失败（生产经营部）
 * ,22项目决算,23项目决算审核（生产经营部）,24项目决算审核通过（生产经营部）,
 * 25项目决算审核失败（生产经营部）,26项目决算审核（财务部）,27项目决算审核通过（财务部）,
 * 28项目决算审核失败（财务部）
 */
FormatUtil.getProjectStatus = (function() {
    return function(status) {
        var statusObj = {
            1:"新建项目", 2:"项目信息收集", 3:"立项审核",
            4:"立项审核通过", 5:"立项审核失败", 6:"项目实施准备",
            7:"项目实施", 8:"成本汇总", 9:"验收审核",
            10:"验收审核通过", 11:"验收审核失败", 12:"验收中",
            13:"缺陷责任管理", 14:"缺陷责任管理（未结题）", 15:"缺陷责任管理（已结题）",
            16:"缺陷责任管理（结题失败）", 17:"已结题", 18:"项目删除", 19:"立项审核中（生产经营部）",
            20:"立项审核通过（生产经营部）", 21:"立项审核失败（生产经营部）", 22:"项目决算",
            23:"项目决算审核（生产经营部）", 24:"项目决算审核通过（生产经营部）", 25:"项目决算审核失败（生产经营部）",
            26:"项目决算审核（财务部）", 27:"项目决算审核通过（财务部）", 28:"项目决算审核失败（财务部）"
        };
        return typeof(statusObj[status])=="undefined"?"无":statusObj[status];
    }
})();

//退库清单状态 back storage form
FormatUtil.getBSFStatus = (function() {
    return function(status) {
        var statusObj = {
            0:"新建", 1:"退库中", 2:"退库失败",
            3:"已退库"
        };
        return typeof(statusObj[status])=="undefined"?"无":statusObj[status];
    }
})();

/**
 * 获取流程名称
 */
FormatUtil.getWorkFlowName = (function() {
    return function(value) {
        var valueObj = {
            "zxgc_WorkFlow":"专项工程",
            "zxgc_DeviceProcPlan_WorkFlow":"设备采购计划分单（专项工程）",
            "zxgc_DeviceOutStorgeAndProc_WorkFlow":"设备出库以及采购（专项工程）",
        };
        return typeof(valueObj[value])=="undefined"?"无":valueObj[value];
    }
})();

/**
 * 获取业务状态
 */
FormatUtil.getBusinessStatus = (function() {
    return function(type, status) {
        switch (type){
            case "zxgc_WorkFlow":
                return FormatUtil.getProjectStatus(status);
            case "zxgc_DeviceProcPlan_WorkFlow":
                return FormatUtil.getProcurementPlanStatus(status);
            case "zxgc_DeviceOutStorgeAndProc_WorkFlow":
                return FormatUtil.getOutStorageStatus(status);
            default:
                return "无";
        }
    }
})();

/**
 * 获取拆分类型
 */
FormatUtil.getSplitType = (function() {
    return function(type) {
        var typeObj = {
            1:"出库拆分", 2:"集中采购", 3:"自采"
        };
        return typeof(typeObj[type])=="undefined"?"无":typeObj[type];
    }
})();

/**
 * 保留两位小数
 */
FormatUtil.getPrice = (function () {
    return function (price) {
        var v = new Number(price).toFixed(2);
        return typeof(v)=="NaN"?0.00:v;
    }
})();
/**
 *价格累计
 */
FormatUtil.incrementPrice = (function () {
    return function (infoObj,incrementNum) {
        var totalPric=parseFloat(FormatUtil.getPrice(infoObj.text()))+parseFloat(FormatUtil.getPrice(incrementNum));
        infoObj.text(FormatUtil.getPrice(totalPric));
    }

})();
/**
 * 在固定元素上显示累加的总价格
 */
FormatUtil.showToatalPrice = (function () {
    return function (infoObj,rowDatas) {
        infoObj.text(0.00);
        $(rowDatas).each(function(i,obj){
            FormatUtil.incrementPrice(infoObj,obj);
        });
    }
})();



/**
 * 结束时间加入具体时分秒
 */
FormatUtil.getEndTime = (function () {
    return function (time) {
        return time + " 23:59:59";
    }
})();

/**
 * 格式化文件大小
 */
FormatUtil.getFileSize = (function () {
    return function (value) {
        if(typeof(value)=="undefined"||value==''){
            return "0 Bytes";
        }
        var unitArr = new Array(" Bytes"," KB"," MB"," GB"," TB"," PB"," EB"," ZB"," YB");
        var index;
        var srcsize = parseFloat(value);
        index=Math.floor(Math.log(srcsize)/Math.log(1024));
        var size =srcsize/Math.pow(1024,index);
        size=size.toFixed(2);//保留的小数位数
        return size+unitArr[index];
    }
}());

/**
 * 获取计量单位类型
 */
FormatUtil.getMeasureUnitType = (function () {
    return function (type) {
        var typeObj = {
            1:"质量", 2:"长度", 3:"数量",
            4:"面积", 5:"体积"
        };
        return typeof(typeObj[type])=="undefined"?"无":typeObj[type];
    }


})();


